import java.util.LinkedList;
import java.util.Stack;

/**
 * Created by xiebang
 * Description
 * User:小谢
 * Date:2021-09-26
 * Time:20:03
 */
public class Testdemo {
    public static void main(String[] args) {
        LinkedList<Integer> linkedList = new LinkedList<>();
        //只要满足先进先出就行
        linkedList.offer(1);
        linkedList.offer(2);
        linkedList.offer(3);
        linkedList.add(3);

        System.out.println(linkedList.peek());
        System.out.println(linkedList.poll());
        System.out.println(linkedList.isEmpty());//删除头

        //双端队列 deque
        //可以中从头入
    }
    public static void main3(String[] args) {
        MyQueue myQueue = new MyQueue();
        myQueue.offer(1);
        myQueue.offer(2);
        myQueue.offer(3);
        System.out.println(myQueue.peek());//1
        System.out.println(myQueue.poll());//1
        System.out.println(myQueue.peek());//2
        System.out.println(myQueue.poll());//2
        System.out.println(myQueue.isEmpty());//false
        System.out.println(myQueue.size());//1

    }
    public static void main2(String[] args) {
        MyStack stack = new MyStack();
        stack.push(1);
        stack.push(2);
        stack.push(3);
        System.out.println(stack.peek());//获取栈顶元素不删除 3
        System.out.println(stack.pop());//弹出栈顶元素3
        System.out.println(stack.peek());//获取栈顶元素不删除 2
        System.out.println(stack.empty());//判断栈是否为空
        System.out.println("==============================");
        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());

        //单链表？
        //头插法 入栈 时间复杂度是O（1） 出栈是从头出 （删）：O(1)
        //尾插法 入栈 时间复杂度是O（N） 出栈是从尾巴出（删）：O（N）
        //链式栈 一定要头删头插。
    }
    public static void main1(String[] args) {
        Stack<Integer> stack = new Stack<>();//底层是数组
        stack.push(1);
        stack.push(2);
        stack.push(3);
        System.out.println(stack.peek());//获取栈顶元素不删除 3
        System.out.println(stack.pop());//弹出栈顶元素3
        System.out.println(stack.peek());//获取栈顶元素不删除 2
        System.out.println(stack.empty());//判断栈是否为空
    }
}
